home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / Triton / Source / demos / demo.c < prev    next >
C/C++ Source or Header  |  1998-05-23  |  41KB  |  1,258 lines

  1. /*
  2.  *  OpenTriton -- A free release of the triton.library source code
  3.  *  Copyright (C) 1993-1998  Stefan Zeiger
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  *
  19.  *  demo.c - Triton demo program
  20.  *
  21.  */
  22.  
  23.  
  24. /*************************************************************************************** Include our stuff */
  25.  
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28. #include <string.h>
  29.  
  30. #include <libraries/triton.h>
  31.  
  32. #ifdef __GNUC__
  33.  
  34. #ifndef __OPTIMIZE__
  35. #include <clib/triton_protos.h>
  36. #include <clib/dos_protos.h>
  37. #include <clib/intuition_protos.h>
  38. #else
  39. #include <inline/triton.h>
  40. #include <inline/dos.h>
  41. #include <inline/intuition.h>
  42. #endif /* __OPTIMIZE__ */
  43.  
  44. #else
  45. #include <proto/triton.h>
  46. #include <proto/dos.h>
  47. #include <proto/intuition.h>
  48.  
  49. #endif /* __GNUC__ */
  50.  
  51.  
  52. /********************************************************************************* Disable CTRL-C handling */
  53.  
  54. #ifdef __GNUC__
  55. __chkabort(){}
  56. #else
  57. #ifdef __SASC__
  58. int CXBRK(void) { return(0); }
  59. int chkabort(void) { return(0); }
  60. #endif
  61. #endif
  62.  
  63.  
  64. /**************************************************************************************** Global variables */
  65.  
  66. struct TR_Project *main_project;
  67.  
  68.  
  69. /***************************************************************************************** Window 'groups' */
  70.  
  71. ProjectDefinition(groups_trwintags)
  72. {
  73.   WindowTitle("Groups"), WindowPosition(TRWP_CENTERDISPLAY), WindowUnderscore("~"), WindowID(1),
  74.  
  75.   HorizGroupA, Space, VertGroupA,
  76.     Space,
  77.  
  78.     NamedFrameBox("TRGR_PROPSHARE (default)"), ObjectBackfillWin, VertGroupA, Space, HorizGroupC,
  79.       Space,
  80.       Button("Short",1),
  81.       Space,
  82.       Button("And much, much longer...",2),
  83.       Space,
  84.       EndGroup, Space, EndGroup,
  85.  
  86.     Space,
  87.  
  88.     NamedFrameBox("TRGR_EQUALSHARE"), ObjectBackfillWin, VertGroupA, Space, HorizGroupEC,
  89.       Space,
  90.       Button("Short",3),
  91.       Space,
  92.       Button("And much, much longer...",4),
  93.       Space,
  94.       EndGroup, Space, EndGroup,
  95.  
  96.     Space,
  97.  
  98.     NamedFrameBox("TRGR_PROPSPACES"), ObjectBackfillWin, VertGroupA, Space, HorizGroupSC,
  99.       Space,
  100.       Button("Short",5),
  101.       Space,
  102.       Button("And much, much longer...",6),
  103.       Space,
  104.       EndGroup, Space, EndGroup,
  105.  
  106.     Space,
  107.  
  108.     NamedFrameBox("TRGR_ARRAY"), ObjectBackfillWin, VertGroupA, Space, LineArray,
  109.       BeginLine,
  110.         Space,
  111.         Button("Short",7),
  112.         Space,
  113.         Button("And much, much longer...",8),
  114.         Space,
  115.         EndLine,
  116.       Space,
  117.       BeginLine,
  118.         Space,
  119.         Button("Not so short",9),
  120.         Space,
  121.         Button("And a bit longer...",10),
  122.         Space,
  123.         EndLine,
  124.       Space,
  125.       BeginLineI,
  126.         NamedSeparator("An independent line"),
  127.         EndLine,
  128.       Space,
  129.       BeginLine,
  130.         Space,
  131.         Button("foo bar",12),
  132.         Space,
  133.         Button("42",13),
  134.         Space,
  135.         EndLine,
  136.       EndArray, Space, EndGroup,
  137.  
  138.     Space,
  139.     EndGroup, Space, EndGroup,
  140.   EndProject
  141. };
  142.  
  143.  
  144. VOID do_groups(VOID)
  145. {
  146.   BOOL close_me=FALSE;
  147.   struct TR_Message *trmsg;
  148.   struct TR_Project *groups_project;
  149.  
  150.   if(groups_project=TR_OpenProject(Application,groups_trwintags))
  151.   {
  152.     TR_LockProject(main_project);
  153.     while(!close_me)
  154.     {
  155.       TR_Wait(Application,NULL);
  156.       while(trmsg=TR_GetMsg(Application))
  157.       {
  158.         if(trmsg->trm_Project==groups_project) switch(trmsg->trm_Class)
  159.         {
  160.           case TRMS_CLOSEWINDOW:
  161.             close_me=TRUE;
  162.             break;
  163.  
  164.           case TRMS_ERROR:
  165.             puts(TR_GetErrorString(trmsg->trm_Data));
  166.             break;
  167.         }
  168.         TR_ReplyMsg(trmsg);
  169.       }
  170.     }
  171.     TR_UnlockProject(main_project);
  172.     TR_CloseProject(groups_project);
  173.   }
  174.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  175. }
  176.  
  177.  
  178. /****************************************************************************************** Window 'menus' */
  179.  
  180. struct TagItem menus_trwintags[]=
  181. {
  182.   WindowID(2), WindowTitle("Menus"),
  183.  
  184.   TRMN_Title,                 (ULONG) "A menu",
  185.    TRMN_Item,                 (ULONG) "A simple item", TRAT_ID, 1,
  186.    TRMN_Item,                 (ULONG) "Another item", TRAT_ID, 2,
  187.    TRMN_Item,                 (ULONG) "And now... a barlabel", TRAT_ID, 3,
  188.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  189.    TRMN_Item,                 (ULONG) "1_An item with a shortcut", TRAT_ID, 4,
  190.    TRMN_Item,                 (ULONG) "2_Another one", TRAT_ID, 5,
  191.    TRMN_Item,                 (ULONG) "3_And number 3", TRAT_ID, 6,
  192.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  193.    TRMN_Item,                 (ULONG) "_F1_And under OS3.0: Extended command keys", TRAT_ID, 6,
  194.    TRMN_Item,                 (ULONG) "_F2_Another one", TRAT_ID, 7,
  195.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  196.    TRMN_Item,                 (ULONG) "How do you like submenus?",
  197.     TRMN_Sub,                 (ULONG) "G_Great!", TRAT_ID, 8,
  198.     TRMN_Sub,                 (ULONG) "F_Fine", TRAT_ID, 9,
  199.     TRMN_Sub,                 (ULONG) "D_Don't know", TRAT_ID, 10,
  200.     TRMN_Sub,                 (ULONG) "N_Not so fine", TRAT_ID, 11,
  201.     TRMN_Sub,                 (ULONG) "P_Puke!", TRAT_ID, 12,
  202.  
  203.   TRMN_Title,                 (ULONG) "Another menu",
  204.    TRMN_Item,                 (ULONG) "This item is ghosted", TRMN_Flags, TRMF_DISABLED, TRAT_ID, 100,
  205.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  206.    TRMN_Item,                 (ULONG) "Item 1 is checked", TRMN_Flags, TRMF_CHECKED, TRAT_ID, 13,
  207.    TRMN_Item,                 (ULONG) "Item 2 can be checked, too", TRMN_Flags, TRMF_CHECKIT, TRAT_ID, 14,
  208.  
  209.   TRMN_Title,                 (ULONG) "Ghosted menu",
  210.   TRMN_Flags,                 (ULONG) TRMF_DISABLED,
  211.    TRMN_Item,                 (ULONG) "Item 1", TRAT_ID, 101,
  212.    TRMN_Item,                 (ULONG) "Item 2", TRAT_ID, 102,
  213.  
  214.   TAG_END
  215. };
  216.  
  217.  
  218. VOID do_menus(VOID)
  219. {
  220.   BOOL close_me=FALSE;
  221.   struct TR_Message *trmsg;
  222.   struct TR_Project *menus_project;
  223.  
  224.   if(menus_project=TR_OpenProject(Application,menus_trwintags))
  225.   {
  226.     TR_LockProject(main_project);
  227.     while(!close_me)
  228.     {
  229.       TR_Wait(Application,NULL);
  230.       while(trmsg=TR_GetMsg(Application))
  231.       {
  232.         if(trmsg->trm_Project==menus_project) switch(trmsg->trm_Class)
  233.         {
  234.           case TRMS_CLOSEWINDOW:
  235.             close_me=TRUE;
  236.             break;
  237.  
  238.           case TRMS_ERROR:
  239.             puts(TR_GetErrorString(trmsg->trm_Data));
  240.             break;
  241.  
  242.           case TRMS_NEWVALUE:
  243.             printf("The new value of object %d is %d.\n",trmsg->trm_ID,trmsg->trm_Data);
  244.             break;
  245.  
  246.           case TRMS_ACTION:
  247.             printf("Object %d has triggered an action.\n",trmsg->trm_ID);
  248.             break;
  249.         }
  250.         TR_ReplyMsg(trmsg);
  251.       } 
  252.     }
  253.     TR_UnlockProject(main_project);
  254.     TR_CloseProject(menus_project);
  255.   }
  256.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  257. }
  258.  
  259.  
  260. /**************************************************************************************** Window 'gadgets' */
  261.  
  262. STRPTR cycle_entries[]=
  263. {
  264.   "Entry 0",
  265.   "1",
  266.   "2",
  267.   "3",
  268.   "4",
  269.   "5",
  270.   "6",
  271.   "7",
  272.   "8",
  273.   "9",
  274.   NULL
  275. };
  276.  
  277.  
  278. STRPTR mx_entries[]=
  279. {
  280.   "Choice 0",
  281.   "Choice 1",
  282.   "Choice 2",
  283.   NULL
  284. };
  285.  
  286.  
  287. struct TagItem gadgets_trwintags[]=
  288. {
  289.   WindowID(3),
  290.   WindowTitle("Gadgets"),
  291.   WindowPosition(TRWP_CENTERDISPLAY),
  292.  
  293.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  294.  
  295.     TROB_Space,               (ULONG) NULL,
  296.  
  297.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  298.       TROB_Space,             (ULONG) NULL,
  299.       TROB_Line,              (ULONG) TROF_HORIZ,
  300.       TROB_Space,             (ULONG) NULL,
  301.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "GadTools", TRAT_Flags, (ULONG) TRTX_TITLE,
  302.       TROB_Space,             (ULONG) NULL,
  303.       TROB_Line,              (ULONG) TROF_HORIZ,
  304.       TROB_Space,             (ULONG) NULL,
  305.     TRGR_End,                 (ULONG) NULL,
  306.  
  307.     TROB_Space,               (ULONG) NULL,
  308.  
  309.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  310.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  311.         TROB_Space,           (ULONG) NULL,
  312.         TROB_CheckBox,        (ULONG) NULL,
  313.           TRAT_ID,            (ULONG) 1,
  314.           TRAT_Value,         (ULONG) TRUE,
  315.       TRGR_End,               (ULONG) NULL,
  316.       TROB_Space,             (ULONG) NULL,
  317.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  318.         TROB_Text,            (ULONG) NULL,
  319.           TRAT_Text,          (ULONG) "_Checkbox",
  320.           TRAT_ID,            (ULONG) 1,
  321.         TROB_Space,           (ULONG) NULL,
  322.       TRGR_End,               (ULONG) NULL,
  323.     TRGR_End,                 (ULONG) NULL,
  324.  
  325.     TROB_Space,               (ULONG) NULL,
  326.  
  327.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  328.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  329.         TROB_Space,           (ULONG) NULL,
  330.         TROB_Slider,          (ULONG) NULL,
  331.           TRAT_ID,            (ULONG) 4,
  332.           TRSL_Min,           (ULONG) 1,
  333.           TRSL_Max,           (ULONG) 3,
  334.           TRAT_Value,         (ULONG) 1,
  335.       TRGR_End,               (ULONG) NULL,
  336.       TROB_Space,             (ULONG) NULL,
  337.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  338.         TROB_Text,            (ULONG) NULL,
  339.           TRAT_Text,          (ULONG) "_Slider: ",
  340.           TRAT_ID,            (ULONG) 4,
  341.         TROB_Text,            (ULONG) NULL,
  342.           TRAT_Value,         (ULONG) 1,
  343.           TRAT_ID,            (ULONG) 4,
  344.           TRAT_MinWidth,      (ULONG) 3,
  345.       TROB_Space,             (ULONG) NULL,
  346.       TRGR_End,               (ULONG) NULL,
  347.     TRGR_End,                 (ULONG) NULL,
  348.  
  349.     TROB_Space,               (ULONG) NULL,
  350.  
  351.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  352.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  353.         TROB_Space,           (ULONG) NULL,
  354.         TROB_Scroller,        (ULONG) NULL,
  355.           TRAT_ID,            (ULONG) 5,
  356.           TRAT_Value,         (ULONG) 2,
  357.           TRSC_Total,         (ULONG) 7,
  358.           TRSC_Visible,       (ULONG) 3,
  359.       TRGR_End,               (ULONG) NULL,
  360.       TROB_Space,             (ULONG) NULL,
  361.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  362.         TROB_Text,            (ULONG) NULL,
  363.           TRAT_Text,          (ULONG) "Sc_roller: ",
  364.           TRAT_ID,            (ULONG) 5,
  365.         TROB_Text,            (ULONG) NULL,
  366.           TRAT_Value,         (ULONG) 2,
  367.           TRAT_ID,            (ULONG) 5,
  368.           TRAT_MinWidth,      (ULONG) 3,
  369.       TROB_Space,             (ULONG) NULL,
  370.       TRGR_End,               (ULONG) NULL,
  371.     TRGR_End,                 (ULONG) NULL,
  372.  
  373.     TROB_Space,               (ULONG) NULL,
  374.  
  375.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  376.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  377.         TROB_Space,           (ULONG) NULL,
  378.         TROB_Palette,         (ULONG) NULL,
  379.           TRAT_ID,            (ULONG) 3,
  380.           TRAT_Value,         (ULONG) 1,
  381.       TRGR_End,               (ULONG) NULL,
  382.       TROB_Space,             (ULONG) NULL,
  383.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  384.         TROB_Text,            (ULONG) NULL,
  385.           TRAT_Text,          (ULONG) "_Palette: ",
  386.           TRAT_ID,            (ULONG) 3,
  387.         TROB_Text,            (ULONG) NULL,
  388.           TRAT_Value,         (ULONG) 1,
  389.           TRAT_ID,            (ULONG) 3,
  390.           TRAT_MinWidth,      (ULONG) 3,
  391.       TROB_Space,             (ULONG) NULL,
  392.       TRGR_End,               (ULONG) NULL,
  393.     TRGR_End,                 (ULONG) NULL,
  394.  
  395.     TROB_Space,               (ULONG) NULL,
  396.  
  397.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  398.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  399.         TROB_Space,           (ULONG) NULL,
  400.         TROB_Cycle,           (ULONG) cycle_entries,
  401.           TRAT_ID,            (ULONG) 6,
  402.           TRAT_Value,         (ULONG) 4,
  403.       TRGR_End,               (ULONG) NULL,
  404.       TROB_Space,             (ULONG) NULL,
  405.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  406.         TROB_Text,            (ULONG) NULL,
  407.           TRAT_Text,          (ULONG) "C_ycle: ",
  408.           TRAT_ID,            (ULONG) 6,
  409.         TROB_Text,            (ULONG) NULL,
  410.           TRAT_Value,         (ULONG) 4,
  411.           TRAT_ID,            (ULONG) 6,
  412.           TRAT_MinWidth,      (ULONG) 3,
  413.       TROB_Space,             (ULONG) NULL,
  414.       TRGR_End,               (ULONG) NULL,
  415.     TRGR_End,                 (ULONG) NULL,
  416.  
  417.     TROB_Space,               (ULONG) NULL,
  418.  
  419.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  420.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  421.         TROB_Space,           (ULONG) NULL,
  422.         TROB_Cycle,           (ULONG) mx_entries,
  423.           TRAT_ID,            (ULONG) 13,
  424.           TRAT_Value,         (ULONG) 1,
  425.           TRAT_Flags,         (ULONG) TRCY_MX,
  426.       TRGR_End,               (ULONG) NULL,
  427.       TROB_Space,             (ULONG) NULL,
  428.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  429.         TROB_Text,            (ULONG) NULL,
  430.           TRAT_Text,          (ULONG) "_MX: ",
  431.           TRAT_ID,            (ULONG) 13,
  432.         TROB_Text,            (ULONG) NULL,
  433.           TRAT_Value,         (ULONG) 1,
  434.           TRAT_ID,            (ULONG) 13,
  435.           TRAT_MinWidth,      (ULONG) 3,
  436.         TROB_Space,           (ULONG) NULL,
  437.       TRGR_End,               (ULONG) NULL,
  438.     TRGR_End,                 (ULONG) NULL,
  439.  
  440.     TROB_Space,               (ULONG) NULL,
  441.  
  442.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  443.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  444.         TROB_Space,           (ULONG) NULL,
  445.         TROB_String,          (ULONG) "foo bar",
  446.           TRAT_ID,            (ULONG) 7,
  447.       TRGR_End,               (ULONG) NULL,
  448.       TROB_Space,             (ULONG) NULL,
  449.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  450.         TROB_Text,            (ULONG) NULL,
  451.           TRAT_Text,          (ULONG) "S_tring",
  452.           TRAT_ID,            (ULONG) 7,
  453.       TROB_Space,             (ULONG) NULL,
  454.       TRGR_End,               (ULONG) NULL,
  455.     TRGR_End,                 (ULONG) NULL,
  456.  
  457.     TROB_Space,               (ULONG) NULL,
  458.  
  459.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  460.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  461.         TROB_Space,           (ULONG) NULL,
  462.         TROB_String,          (ULONG) "",
  463.           TRAT_Flags,         (ULONG) TRST_INVISIBLE,
  464.           TRAT_ID,            (ULONG) 15,
  465.       TRGR_End,               (ULONG) NULL,
  466.       TROB_Space,             (ULONG) NULL,
  467.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  468.         TROB_Text,            (ULONG) NULL,
  469.           TRAT_Text,          (ULONG) "Pass_word",
  470.           TRAT_ID,            (ULONG) 15,
  471.       TROB_Space,             (ULONG) NULL,
  472.       TRGR_End,               (ULONG) NULL,
  473.     TRGR_End,                 (ULONG) NULL,
  474.  
  475.     TROB_Space,               (ULONG) NULL,
  476.  
  477.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  478.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  479.         TROB_Space,           (ULONG) NULL,
  480.         TROB_String,          (ULONG) "0.42",
  481.           TRAT_Flags,         (ULONG) TRST_FLOAT,
  482.           TRST_Filter,        (ULONG) "01234567.,",
  483.           TRAT_ID,            (ULONG) 16,
  484.       TRGR_End,               (ULONG) NULL,
  485.       TROB_Space,             (ULONG) NULL,
  486.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  487.         TROB_Text,            (ULONG) NULL,
  488.           TRAT_Text,          (ULONG) "_Octal float",
  489.           TRAT_ID,            (ULONG) 16,
  490.       TROB_Space,             (ULONG) NULL,
  491.       TRGR_End,               (ULONG) NULL,
  492.     TRGR_End,                 (ULONG) NULL,
  493.  
  494.     TROB_Space,               (ULONG) NULL,
  495.  
  496.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  497.       TROB_Space,             (ULONG) NULL,
  498.       TROB_Line,              (ULONG) TROF_HORIZ,
  499.       TROB_Space,             (ULONG) NULL,
  500.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "BOOPSI", TRAT_Flags, (ULONG) TRTX_TITLE,
  501.       TROB_Space,             (ULONG) NULL,
  502.       TROB_Line,              (ULONG) TROF_HORIZ,
  503.       TROB_Space,             (ULONG) NULL,
  504.     TRGR_End,                 (ULONG) NULL,
  505.  
  506.     TROB_Space,               (ULONG) NULL,
  507.  
  508.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  509.       TROB_Space,             (ULONG) NULL,
  510.       TROB_Button,            (ULONG) NULL, TRAT_ID, 2, TRAT_Text, (ULONG) "_Button",
  511.       TROB_Space,             (ULONG) NULL,
  512.     TRGR_End,                 (ULONG) NULL,
  513.  
  514.     TROB_Space,               (ULONG) NULL,
  515.  
  516.     TRGR_Horiz,               (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  517.       TROB_Space,             (ULONG) NULL,
  518.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_File:", TRAT_ID, 10,
  519.       TROB_Space,             (ULONG) NULL,
  520.       TROB_Button,            (ULONG) TRBT_GETFILE, TRAT_ID, 10, TRAT_Text, (ULONG) "",
  521.       TROB_Space,             (ULONG) NULL,
  522.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Drawer:", TRAT_ID, 11,
  523.       TROB_Space,             (ULONG) NULL,
  524.       TROB_Button,            (ULONG) TRBT_GETDRAWER, TRAT_ID, 11, TRAT_Text, (ULONG) "",
  525.       TROB_Space,             (ULONG) NULL,
  526.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Entry:", TRAT_ID, 12,
  527.       TROB_Space,             (ULONG) NULL,
  528.       TROB_Button,            (ULONG) TRBT_GETENTRY, TRAT_ID, 12, TRAT_Text, (ULONG) "",
  529.       TROB_Space,             (ULONG) NULL,
  530.     TRGR_End,                 (ULONG) NULL,
  531.  
  532.     TROB_Space,               (ULONG) NULL,
  533.  
  534.     TRGR_End,                 (ULONG) NULL,
  535.  
  536.   TAG_END
  537. };
  538.  
  539.  
  540. VOID do_gadgets(VOID)
  541. {
  542.   BOOL close_me=FALSE;
  543.   struct TR_Message *trmsg;
  544.   struct TR_Project *gadgets_project;
  545.  
  546.   if(gadgets_project=TR_OpenProject(Application,gadgets_trwintags))
  547.   {
  548.     TR_LockProject(main_project);
  549.     while(!close_me)
  550.     {
  551.       TR_Wait(Application,NULL);
  552.       while(trmsg=TR_GetMsg(Application))
  553.       {
  554.         if(trmsg->trm_Project==gadgets_project) switch(trmsg->trm_Class)
  555.         {
  556.           case TRMS_CLOSEWINDOW:
  557.             close_me=TRUE;
  558.             break;
  559.  
  560.           case TRMS_ERROR:
  561.             puts(TR_GetErrorString(trmsg->trm_Data));
  562.             break;
  563.         }
  564.         TR_ReplyMsg(trmsg);
  565.       }
  566.     }
  567.     TR_UnlockProject(main_project);
  568.     TR_CloseProject(gadgets_project);
  569.   }
  570.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  571. }
  572.  
  573.  
  574. /************************************************************************************** Window 'disabling' */
  575.  
  576. struct TagItem disabling_trwintags[]=
  577. {
  578.   WindowID(4), WindowTitle("Disabling"), WindowPosition(TRWP_CENTERDISPLAY),
  579.  
  580.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  581.  
  582.     TROB_Space,               (ULONG) NULL,
  583.  
  584.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  585.       TROB_Space,             (ULONG) NULL,
  586.       TROB_CheckBox,          (ULONG) NULL, TRAT_ID, 1, TRAT_Value, TRUE,
  587.       TROB_Space,             (ULONG) NULL,
  588.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Disabled", TRAT_ID, 1,
  589.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES,
  590.         TROB_Space,           (ULONG) NULL,
  591.         TRGR_End,             (ULONG) NULL,
  592.       TRGR_End,               (ULONG) NULL,
  593.  
  594.     TROB_Space,               (ULONG) NULL,
  595.  
  596.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  597.       TROB_Space,             (ULONG) NULL,
  598.       TROB_Line,              (ULONG) TROF_HORIZ,
  599.       TROB_Space,             (ULONG) NULL,
  600.       TRGR_End,               (ULONG) NULL,
  601.  
  602.     TROB_Space,               (ULONG) NULL,
  603.  
  604.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  605.       TROB_Space,             (ULONG) NULL,
  606.       TROB_CheckBox,          (ULONG) NULL, TRAT_Value, TRUE, TRAT_ID, 2, TRAT_Disabled, TRUE,
  607.       TROB_Space,             (ULONG) NULL,
  608.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Checkbox", TRAT_ID, 2,
  609.       TROB_Space,             (ULONG) NULL,
  610.     TRGR_End,                 (ULONG) NULL,
  611.  
  612.     TROB_Space,               (ULONG) NULL,
  613.  
  614.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  615.       TROB_Space,             (ULONG) NULL,
  616.       TROB_Button,            (ULONG) NULL, TRAT_Text, (ULONG) "_Button", TRAT_ID, 3, TRAT_Disabled, TRUE,
  617.       TROB_Space,             (ULONG) NULL,
  618.     TRGR_End,                 (ULONG) NULL,
  619.  
  620.     TROB_Space,               (ULONG) NULL,
  621.  
  622.   TRGR_End,                   (ULONG) NULL,
  623.  
  624.   TAG_END
  625. };
  626.  
  627.  
  628. VOID do_disabling(VOID)
  629. {
  630.   BOOL close_me=FALSE;
  631.   struct TR_Message *trmsg;
  632.   struct TR_Project *disabling_project;
  633.  
  634.   if(disabling_project=TR_OpenProject(Application,disabling_trwintags))
  635.   {
  636.     TR_LockProject(main_project);
  637.     while(!close_me)
  638.     {
  639.       TR_Wait(Application,NULL);
  640.       while(trmsg=TR_GetMsg(Application))
  641.       {
  642.         if(trmsg->trm_Project==disabling_project) switch(trmsg->trm_Class)
  643.         {
  644.           case TRMS_CLOSEWINDOW:
  645.             close_me=TRUE;
  646.             break;
  647.  
  648.           case TRMS_ERROR:
  649.             puts(TR_GetErrorString(trmsg->trm_Data));
  650.             break;
  651.  
  652.           case TRMS_NEWVALUE:
  653.             if(trmsg->trm_ID==1)
  654.             {
  655.               TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg->trm_Data);
  656.               TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg->trm_Data);
  657.             }
  658.         }
  659.         TR_ReplyMsg(trmsg);
  660.       }
  661.     }
  662.     TR_UnlockProject(main_project);
  663.     TR_CloseProject(disabling_project);
  664.   }
  665.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  666. }
  667.  
  668.  
  669. /******************************************************************************************* Window 'text' */
  670.  
  671. ProjectDefinition(text_trwintags)
  672. {
  673.   WindowID(5), WindowTitle("Text"), WindowPosition(TRWP_CENTERDISPLAY),
  674.   VertGroupA,
  675.     Space, CenteredText("Normal text"),
  676.     Space, CenteredTextH("Highlighted text"),
  677.     Space, CenteredText3("3-dimensional text"),
  678.     Space, CenteredTextB("Bold text"),
  679.     Space, CenteredText("A _shortcut"),
  680.     Space, CenteredInteger(42),
  681.     Space, HorizGroupAC,
  682.              Space,
  683.              ClippedText("This is a very long text which is truncated to fit with TRTX_CLIPPED."),
  684.              Space, EndGroup,
  685.     Space, EndGroup, EndProject
  686. };
  687.  
  688.  
  689. VOID do_text(VOID)
  690. {
  691.   BOOL close_me=FALSE;
  692.   struct TR_Message *trmsg;
  693.   struct TR_Project *text_project;
  694.  
  695.   if(text_project=TR_OpenProject(Application,text_trwintags))
  696.   {
  697.     TR_LockProject(main_project);
  698.     while(!close_me)
  699.     {
  700.       TR_Wait(Application,NULL);
  701.       while(trmsg=TR_GetMsg(Application))
  702.       {
  703.         if(trmsg->trm_Project==text_project) switch(trmsg->trm_Class)
  704.         {
  705.           case TRMS_CLOSEWINDOW:
  706.             close_me=TRUE;
  707.             break;
  708.  
  709.           case TRMS_ERROR:
  710.             puts(TR_GetErrorString(trmsg->trm_Data));
  711.             break;
  712.         }
  713.         TR_ReplyMsg(trmsg);
  714.       }
  715.     }
  716.     TR_UnlockProject(main_project);
  717.     TR_CloseProject(text_project);
  718.   }
  719.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  720. }
  721.  
  722.  
  723. /*********************************************************************************** Window 'notification' */
  724.  
  725. ProjectDefinition(notification_trwintags)
  726. {
  727.   WindowID(6), WindowTitle("Notification"), WindowPosition(TRWP_CENTERDISPLAY),
  728.   VertGroupA,
  729.     Space,
  730.     NamedSeparatorI("_Checkmarks",1),
  731.     Space,
  732.  
  733.     HorizGroupSAC,
  734.       Space, CheckBox(1),
  735.       Space, CheckBox(1),
  736.       Space, CheckBox(1),
  737.       Space, EndGroup,
  738.  
  739.     Space,
  740.  
  741.     HorizGroupSAC,
  742.       Space, CheckBox(1),
  743.       Space, CheckBox(1),
  744.       Space, CheckBox(1),
  745.       Space, EndGroup,
  746.  
  747.     Space,
  748.     HorizGroupSAC,
  749.       Space, CheckBox(1),
  750.       Space, CheckBox(1),
  751.       Space, CheckBox(1),
  752.       Space, EndGroup,
  753.  
  754.     Space,
  755.     NamedSeparatorI("_Slider and Progress indicator",2),
  756.     Space,
  757.  
  758.     HorizGroupAC,
  759.       Space,
  760.       SliderGadget(0,10,8,2),
  761.       Space,
  762.       Integer3(8),TRAT_ID,2,TRAT_MinWidth,3,
  763.       Space,
  764.       EndGroup,
  765.  
  766.     Space,
  767.  
  768.     HorizGroupAC,
  769.       Space,
  770.       TextN("0%"),
  771.       Space,
  772.       Progress(10,8,2),
  773.       Space,
  774.       TextN("100%"),
  775.       Space,
  776.       EndGroup,
  777.  
  778.     Space,
  779.   EndGroup, EndProject
  780. };
  781.  
  782.  
  783. VOID do_notification(VOID)
  784. {
  785.   BOOL close_me=FALSE;
  786.   struct TR_Message *trmsg;
  787.   struct TR_Project *notification_project;
  788.  
  789.   if(notification_project=TR_OpenProject(Application,notification_trwintags))
  790.   {
  791.     TR_LockProject(main_project);
  792.     while(!close_me)
  793.     {
  794.       TR_Wait(Application,NULL);
  795.       while(trmsg=TR_GetMsg(Application))
  796.       {
  797.         if(trmsg->trm_Project==notification_project) switch(trmsg->trm_Class)
  798.         {
  799.           case TRMS_CLOSEWINDOW:
  800.             close_me=TRUE;
  801.             break;
  802.  
  803.           case TRMS_ERROR:
  804.             puts(TR_GetErrorString(trmsg->trm_Data));
  805.             break;
  806.         }
  807.         TR_ReplyMsg(trmsg);
  808.       }
  809.     }
  810.     TR_UnlockProject(main_project);
  811.     TR_CloseProject(notification_project);
  812.   }
  813.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  814. }
  815.  
  816.  
  817. /*************************************************************************************** Window 'backfill' */
  818.  
  819. ProjectDefinition(backfill_trwintags)
  820. {
  821.   WindowID(7), WindowTitle("Backfill"), WindowPosition(TRWP_CENTERDISPLAY),
  822.   VertGroupA,
  823.     Space,  CenteredText("Each window and"),
  824.     SpaceS, CenteredText("FrameBox can have"),
  825.     SpaceS, CenteredText("one of the following"),
  826.     SpaceS, CenteredText("backfill patterns"),
  827.     Space,  HorizGroupA,
  828.               Space, GroupBox, ObjectBackfillS, SpaceB,
  829.               Space, GroupBox, ObjectBackfillSA, SpaceB,
  830.               Space, GroupBox, ObjectBackfillSF, SpaceB,
  831.               Space, EndGroup,
  832.     Space,  HorizGroupA,
  833.               Space, GroupBox, ObjectBackfillSB, SpaceB,
  834.               Space, GroupBox, ObjectBackfillA, SpaceB,
  835.               Space, GroupBox, ObjectBackfillAF, SpaceB,
  836.               Space, EndGroup,
  837.     Space,  HorizGroupA,
  838.               Space, GroupBox, ObjectBackfillAB, SpaceB,
  839.               Space, GroupBox, ObjectBackfillF, SpaceB,
  840.               Space, GroupBox, ObjectBackfillFB, SpaceB,
  841.               Space, EndGroup,
  842.     Space, EndGroup, EndProject
  843. };
  844.  
  845.  
  846. VOID do_backfill(VOID)
  847. {
  848.   BOOL close_me=FALSE;
  849.   struct TR_Message *trmsg;
  850.   struct TR_Project *backfill_project;
  851.  
  852.   if(backfill_project=TR_OpenProject(Application,backfill_trwintags))
  853.   {
  854.     TR_LockProject(main_project);
  855.     while(!close_me)
  856.     {
  857.       TR_Wait(Application,NULL);
  858.       while(trmsg=TR_GetMsg(Application))
  859.       {
  860.         if(trmsg->trm_Project==backfill_project) switch(trmsg->trm_Class)
  861.         {
  862.           case TRMS_CLOSEWINDOW:
  863.             close_me=TRUE;
  864.             break;
  865.  
  866.           case TRMS_ERROR:
  867.             puts(TR_GetErrorString(trmsg->trm_Data));
  868.             break;
  869.         }
  870.         TR_ReplyMsg(trmsg);
  871.       }
  872.     }
  873.     TR_UnlockProject(main_project);
  874.     TR_CloseProject(backfill_project);
  875.   }
  876.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  877. }
  878.  
  879.  
  880. /************************************************************************************** Window 'appwindow' */
  881.  
  882. ProjectDefinition(appwindow_trwintags)
  883. {
  884.   WindowID(8), WindowTitle("AppWindow"), WindowPosition(TRWP_CENTERDISPLAY),
  885.   VertGroupA,
  886.     Space,  CenteredText("This window is an application window."),
  887.     SpaceS, CenteredText("Drop icons into the window or into"),
  888.     SpaceS, CenteredText("the icon drop boxes below and see"),
  889.     SpaceS, CenteredText("what will happen..."),
  890.     Space,  HorizGroupA,
  891.               Space, DropBox(1),
  892.               Space, DropBox(2),
  893.               Space, EndGroup,
  894.     Space, EndGroup, EndProject
  895. };
  896.  
  897.  
  898. VOID do_appwindow(VOID)
  899. {
  900.   BOOL close_me=FALSE;
  901.   struct TR_Message *trmsg;
  902.   struct TR_Project *appwindow_project;
  903.   UBYTE reqstr[200],dirname[100];
  904.  
  905.   if(appwindow_project=TR_OpenProject(Application,appwindow_trwintags))
  906.   {
  907.     TR_LockProject(main_project);
  908.     while(!close_me)
  909.     {
  910.       TR_Wait(Application,NULL);
  911.       while(trmsg=TR_GetMsg(Application))
  912.       {
  913.         if(trmsg->trm_Project==appwindow_project) switch(trmsg->trm_Class)
  914.         {
  915.           case TRMS_CLOSEWINDOW:
  916.             close_me=TRUE;
  917.             break;
  918.  
  919.           case TRMS_ERROR:
  920.             puts(TR_GetErrorString(trmsg->trm_Data));
  921.             break;
  922.  
  923.           case TRMS_ICONDROPPED:
  924.             dirname[0]=0;
  925.             NameFromLock(((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Lock,dirname,100);
  926.             AddPart(dirname,((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Name,100);
  927.             switch(trmsg->trm_ID)
  928.             {
  929.               case 1:
  930.                 sprintf(reqstr,"Icon(s) dropped into the left box.\tName of first dropped icon:\n%%3%s",dirname);
  931.                 break;
  932.               case 2:
  933.                 sprintf(reqstr,"Icon(s) dropped into the right box.\tName of first dropped icon:\n%%3%s",dirname);
  934.                 break;
  935.               default:
  936.                 sprintf(reqstr,"Icon(s) dropped into the window.\tName of first dropped icon:\n%%3%s",dirname);
  937.             }
  938.             TR_EasyRequestTags(Application,reqstr,"_Ok",
  939.               TREZ_LockProject,appwindow_project,TREZ_Title,"AppWindow report",TREZ_Activate,TRUE,TAG_END);
  940.             break;
  941.         }
  942.         TR_ReplyMsg(trmsg);
  943.       }
  944.     }
  945.     TR_UnlockProject(main_project);
  946.     TR_CloseProject(appwindow_project);
  947.   }
  948.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  949. }
  950.  
  951.  
  952. /****************************************************************************************** Window 'lists' */
  953.  
  954. struct TR_Dimensions lists_dim;
  955.  
  956. extern struct List LVList1;
  957. extern struct List LVList2;
  958. extern struct List LVList3;
  959.  
  960. struct Node LVNodes1[] =
  961. {
  962.   { &LVNodes1[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  963.   { &LVNodes1[2], &LVNodes1[0],                     0, 0, "READ ONLY" },
  964.   { &LVNodes1[3], &LVNodes1[1],                     0, 0, "Listview" },
  965.   { &LVNodes1[4], &LVNodes1[2],                     0, 0, "gadget using" },
  966.   { &LVNodes1[5], &LVNodes1[3],                     0, 0, "the fixed-" },
  967.   { &LVNodes1[6], &LVNodes1[4],                     0, 0, "width font." },
  968.   { &LVNodes1[7], &LVNodes1[5],                     0, 0, "" },
  969.   { &LVNodes1[ 8], &LVNodes1[ 6],                   0, 0, "This window" },
  970.   { &LVNodes1[ 9], &LVNodes1[ 7],                   0, 0, "will remember" },
  971.   { &LVNodes1[10], &LVNodes1[ 8],                   0, 0, "its position" },
  972.   { &LVNodes1[11], &LVNodes1[ 9],                   0, 0, "even without" },
  973.   { &LVNodes1[12], &LVNodes1[10],                   0, 0, "the Preferences" },
  974.   { &LVNodes1[13], &LVNodes1[11],                   0, 0, "system, when" },
  975.   { &LVNodes1[14], &LVNodes1[12],                   0, 0, "you reopen it," },
  976.   { &LVNodes1[15], &LVNodes1[13],                   0, 0, "because it has" },
  977.   { &LVNodes1[16], &LVNodes1[14],                   0, 0, "got a dimension" },
  978.   { &LVNodes1[17], &LVNodes1[15],                   0, 0, "structure" },
  979.   { &LVNodes1[18], &LVNodes1[16],                   0, 0, "attached" },
  980.   { (struct Node *)&LVList3.lh_Tail, &LVNodes1[17], 0, 0, "to it." }
  981. };
  982.  
  983. struct Node LVNodes2[] =
  984. {
  985.   { &LVNodes2[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  986.   { &LVNodes2[2], &LVNodes2[0],                     0, 0, "SELECT" },
  987.   { &LVNodes2[3], &LVNodes2[1],                     0, 0, "Listview" },
  988.   { &LVNodes2[4], &LVNodes2[2],                     0, 0, "gadget." },
  989.   { &LVNodes2[5], &LVNodes2[3],                     0, 0, "Use the" },
  990.   { &LVNodes2[6], &LVNodes2[4],                     0, 0, "numeric" },
  991.   { &LVNodes2[7], &LVNodes2[5],                     0, 0, "key pad to" },
  992.   { &LVNodes2[8], &LVNodes2[6],                     0, 0, "move" },
  993.   { (struct Node *)&LVList3.lh_Tail, &LVNodes2[7],  0, 0, "around." }
  994. };
  995.  
  996. struct Node LVNodes3[] =
  997. {
  998.   { &LVNodes3[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  999.   { &LVNodes3[2], &LVNodes3[0],                     0, 0, "SHOW" },
  1000.   { &LVNodes3[3], &LVNodes3[1],                     0, 0, "SELECTED" },
  1001.   { &LVNodes3[4], &LVNodes3[2],                     0, 0, "Listview" },
  1002.   { &LVNodes3[5], &LVNodes3[3],                     0, 0, "gadget." },
  1003.   { &LVNodes3[6], &LVNodes3[4],                     0, 0, "This list" },
  1004.   { &LVNodes3[7], &LVNodes3[5],                     0, 0, "is a bit" },
  1005.   { &LVNodes3[8], &LVNodes3[6],                     0, 0, "longer, so" },
  1006.   { &LVNodes3[9], &LVNodes3[7],                     0, 0, "that you" },
  1007.   { &LVNodes3[10],&LVNodes3[8],                     0, 0, "can try the" },
  1008.   { &LVNodes3[11],&LVNodes3[9],                     0, 0, "other" },
  1009.   { &LVNodes3[12],&LVNodes3[10],                    0, 0, "keyboard" },
  1010.   { (struct Node *)&LVList3.lh_Tail, &LVNodes3[11], 0, 0, "shortcuts." }
  1011. };
  1012.  
  1013. struct List LVList1=
  1014. {
  1015.   (struct Node *)&LVNodes1[0],
  1016.   (struct Node *)NULL,
  1017.   (struct Node *)&LVNodes1[18],
  1018.   0,0
  1019. };
  1020.  
  1021. struct List LVList2=
  1022. {
  1023.   (struct Node *)&LVNodes2[0],
  1024.   (struct Node *)NULL,
  1025.   (struct Node *)&LVNodes2[8],
  1026.   0,0
  1027. };
  1028.  
  1029. struct List LVList3=
  1030. {
  1031.   (struct Node *)&LVNodes3[0],
  1032.   (struct Node *)NULL,
  1033.   (struct Node *)&LVNodes3[12],
  1034.   0,0
  1035. };
  1036.  
  1037.  
  1038. struct TagItem lists_trwintags[]=
  1039. {
  1040.   WindowID(9), WindowTitle("Lists"), WindowPosition(TRWP_CENTERDISPLAY), WindowDimensions(&lists_dim),
  1041.   HorizGroupA, Space, VertGroupA,
  1042.     Space,
  1043.     NamedSeparatorIN("_Read only",1),
  1044.     Space,
  1045.     FWListROCN(&LVList1,1,0),
  1046.     Space,
  1047.     NamedSeparatorIN("_Select",2),
  1048.     Space,
  1049.     ListSelC(&LVList2,2,0),
  1050.     Space,
  1051.     NamedSeparatorIN("S_how selected",3),
  1052.     Space,
  1053.     ListSSN(&LVList3,3,0,1),
  1054.     Space,
  1055.   EndGroup, Space, EndGroup,
  1056.   EndProject
  1057. };
  1058.  
  1059.  
  1060. VOID do_lists(VOID)
  1061. {
  1062.   BOOL close_me=FALSE;
  1063.   struct TR_Message *trmsg;
  1064.   struct TR_Project *lists_project;
  1065.  
  1066.   if(lists_project=TR_OpenProject(Application,lists_trwintags))
  1067.   {
  1068.     TR_LockProject(main_project);
  1069.     while(!close_me)
  1070.     {
  1071.       TR_Wait(Application,NULL);
  1072.       while(trmsg=TR_GetMsg(Application))
  1073.       {
  1074.         if(trmsg->trm_Project==lists_project) switch(trmsg->trm_Class)
  1075.         {
  1076.           case TRMS_CLOSEWINDOW:
  1077.             close_me=TRUE;
  1078.             break;
  1079.  
  1080.           case TRMS_ERROR:
  1081.             puts(TR_GetErrorString(trmsg->trm_Data));
  1082.             break;
  1083.         }
  1084.         TR_ReplyMsg(trmsg);
  1085.       }
  1086.     }
  1087.     TR_UnlockProject(main_project);
  1088.     TR_CloseProject(lists_project);
  1089.   }
  1090.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  1091. }
  1092.  
  1093.  
  1094. /****************************************************************************************** Window 'about' */
  1095.  
  1096. /* Note: This could be done even simpler with TR_EasyRequest().       */
  1097. /* ~~~~~ It is done with TR_AutoRequest() to show you how this works. */
  1098. /*       See window 'AppWindow' for a TR_EasyRequest() example.       */
  1099.  
  1100. ProjectDefinition(about_trwintags)
  1101. {
  1102.   BeginRequester("About...",TRWP_CENTERDISPLAY),
  1103.  
  1104.   VertGroupA, Space,  CenteredText3("Triton Demo 2.0"),
  1105.               SpaceS, CenteredText("© 1993-1996 by Stefan Zeiger"),
  1106.               Space,  HorizSeparator,
  1107.               Space,  CenteredText("This program is using the"),
  1108.               SpaceS, CenteredText("Triton GUI creation system"),
  1109.               SpaceS, CenteredText("which is © by Stefan Zeiger"),
  1110.               Space,  EndGroup,
  1111.  
  1112.   BeginRequesterGads,
  1113.   CenteredButtonRE("_Ok",1),
  1114.   EndRequester
  1115. };
  1116.  
  1117.  
  1118. /******************************************************************************************* Window 'main' */
  1119.  
  1120. ProjectDefinition(main_trwintags)
  1121. {
  1122.   WindowID(10), WindowTitle("Triton Demo"), WindowPosition(TRWP_CENTERDISPLAY), WindowFlags(TRWF_HELP),
  1123.   QuickHelpOn(TRUE),
  1124.   BeginMenu("Project"),
  1125.     MenuItem("?_About...",101),
  1126.     ItemBarlabel,
  1127.     MenuItem("H_Help",102),
  1128.     MenuItemCC("I_QuickHelp",104),
  1129.     ItemBarlabel,
  1130.     MenuItem("Q_Quit",103),
  1131.   VertGroupA,
  1132.     Space,  CenteredText3("T · r · i · t · o · n"),
  1133.     Space,  CenteredText3("The object oriented GUI creation system"),
  1134.     Space,  CenteredText("Demo program for release 2.0"),
  1135.     Space,  CenteredText("Written and © 1993-1996 by Stefan Zeiger"),
  1136.     Space,  HorizSeparator,
  1137.     Space,  HorizGroupEA,
  1138.               Space, Button("_Gadgets",1),       QuickHelp("Show some fancy gadgets"),
  1139.               Space, Button("G_roups",2),        QuickHelp("Groupies?\nHuh huh..."),
  1140.               Space, Button("_Text",3),          QuickHelp("You know what \'text\' means, huh?"),
  1141.               Space, EndGroup,
  1142.     Space, HorizGroupEA,
  1143.               Space, Button("_Notification",4),  QuickHelp("So you're super-connected now..."),
  1144.               Space, Button("_Backfill",5),      QuickHelp("United colors of Triton"),
  1145.               Space, Button("_Disabling",6),     QuickHelp("To be or not to be"),
  1146.               Space, EndGroup,
  1147.     Space, HorizGroupEA,
  1148.               Space, Button("_AppWindow",7),     QuickHelp("Demonstrate AppWindow feature"),
  1149.               Space, Button("_Menus",8),         QuickHelp("A fancy pull-down menu"),
  1150.               Space, Button("_Lists",9),         QuickHelp("· 4 eggs\n· 1/2lbs bread\n· 1l milk\t%3PS: Don't be late"),
  1151.               Space, EndGroup,
  1152.     Space, EndGroup, EndProject
  1153. };
  1154.  
  1155.  
  1156. VOID do_main(VOID)
  1157. {
  1158.   BOOL close_me=FALSE;
  1159.   struct TR_Message *trmsg;
  1160.   UBYTE reqstr[256];
  1161.   STRPTR helpString;
  1162.  
  1163.   if(main_project=TR_OpenProject(Application,main_trwintags))
  1164.   {
  1165.     while(!close_me)
  1166.     {
  1167.       TR_Wait(Application,NULL);
  1168.       while(trmsg=TR_GetMsg(Application))
  1169.       {
  1170.         if(trmsg->trm_Project==main_project) switch(trmsg->trm_Class)
  1171.         {
  1172.           case TRMS_CLOSEWINDOW:
  1173.             close_me=TRUE;
  1174.             break;
  1175.  
  1176.           case TRMS_HELP:
  1177.         if(helpString=(STRPTR)TR_GetAttribute(main_project,trmsg->trm_ID,TRDO_QuickHelpString))
  1178.           sprintf(reqstr,"Help for object %ld:\n%%h%s",trmsg->trm_ID,helpString);
  1179.         else
  1180.           sprintf(reqstr,"No help available for object %ld.",trmsg->trm_ID);
  1181.             TR_EasyRequestTags(Application,reqstr,"_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1182.             break;
  1183.  
  1184.           case TRMS_ERROR:
  1185.             puts(TR_GetErrorString(trmsg->trm_Data));
  1186.             break;
  1187.  
  1188.           case TRMS_NEWVALUE:
  1189.             if(trmsg->trm_ID==104) TR_SetAttribute(main_project,0,TRWI_QuickHelp,trmsg->trm_Data);
  1190.             break;
  1191.  
  1192.           case TRMS_ACTION:
  1193.             switch(trmsg->trm_ID)
  1194.             {
  1195.               case 1:
  1196.                 do_gadgets();
  1197.                 break;
  1198.               case 2:
  1199.                 do_groups();
  1200.                 break;
  1201.               case 3:
  1202.                 do_text();
  1203.                 break;
  1204.               case 4:
  1205.                 do_notification();
  1206.                 break;
  1207.               case 5:
  1208.                 do_backfill();
  1209.                 break;
  1210.               case 6:
  1211.                 do_disabling();
  1212.                 break;
  1213.               case 7:
  1214.                 do_appwindow();
  1215.                 break;
  1216.               case 8:
  1217.                 do_menus();
  1218.                 break;
  1219.               case 9:
  1220.                 do_lists();
  1221.                 break;
  1222.               case 101:
  1223.                 TR_AutoRequest(Application,main_project,about_trwintags);
  1224.                 break;
  1225.               case 102:
  1226.                 TR_EasyRequestTags(Application,"To get help, move the mouse pointer over\nany gadget or menu item and press <Help>\nor turn on QuickHelp before.","_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1227.                 break;
  1228.               case 103:
  1229.                 close_me=TRUE;
  1230.             }
  1231.             break;
  1232.         }
  1233.         TR_ReplyMsg(trmsg);
  1234.       }
  1235.     }
  1236.     TR_CloseProject(main_project);
  1237.   }
  1238.   else puts(TR_GetErrorString(TR_GetLastError(Application)));
  1239. }
  1240.  
  1241.  
  1242. /******************************************************************************************* Main function */
  1243.  
  1244. int main(void)
  1245. {
  1246.   if(TR_OpenTriton(TRITON20VERSION,
  1247.            TRCA_Name,"TritonDemo",
  1248.            TRCA_LongName,"Triton demo",
  1249.            TRCA_Version,"2.0",TAG_END))
  1250.   {
  1251.     do_main();
  1252.     TR_CloseTriton();
  1253.     return 0;
  1254.   } else puts("Can't open triton.library v6+.");
  1255.  
  1256.   return 20;
  1257. }
  1258.